package com.fanrui.code.dao;

import java.util.Collections;
import java.util.List;

import com.fanrui.code.config.ConfigFileManager;
import com.fanrui.code.entity.Parameter;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class ParameterConfigManager {
	
	// singleton
	private ParameterConfigManager() {}
	
	private static class Singleton {
		private static ParameterConfigManager instance = new ParameterConfigManager();
	}
	
	public static ParameterConfigManager getInstance() {
		return Singleton.instance;
	}
	
	/**
	 * 根据ID查询一条parameter
	 * @param id
	 * @return
	 */
	public Parameter getParameterById(int id) {
		return ConfigFileManager.getInstance().getConfigFileById(Parameter.class, id);
	}
	
	/**
	 * 返回List<String>类型的Parameter值
	 * @param type
	 * @return
	 */
	public List<String> getStrListParameter(EParameterType type) {
		Parameter parameter = getParameterById(type.getType());
		if (parameter != null) {
			Gson gson = new Gson();
			List<String> persons = gson.fromJson(parameter.getValue(), new TypeToken<List<String>>() {
			}.getType());
			return persons;
		}
		return Collections.emptyList();
	}

	/**
	 * 返回Long类型的Parameter值
	 * @param type
	 * @return
	 */
	public Long getLongParameter(EParameterType type) {
		Parameter parameter = getParameterById(type.getType());
		try {
			return Long.parseLong(parameter.getValue());
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 返回Integer类型的Parameter值
	 * @param type
	 * @return
	 */
	public Integer getIntParameter(EParameterType type) {
		Parameter parameter = getParameterById(type.getType());
		try {
			return Integer.parseInt(parameter.getValue());
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

}
